home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Written by Stas Maximov 1998 SVR4 (UnixWare)
- # stmax@u213.srcc.msu.su
- # (C) 1996 The Free Software Foundation.
- #
- #
-
- uni_cat ()
- # $1 is the archive name
- {
- case "$1" in
- *.cpio.Z) compress -dc "$1"
- ;;
- *.cpio.gz) gzip -dc "$1"
- ;;
- *.cpio) cat "$1"
- ;;
- *) echo "unknown extension"
- esac
- }
-
- mccpiofs_list ()
- # $1 is the archive name
- {
- uni_cat "$1" | cpio -itv | /bin/awk '
- {
- if (substr($9,length($9),1) == ",")
- {
- tmp = substr($9, 1, length($9)-1);
- $9 = $8;
- $8 = tmp
- }
- else if (substr($10,length($10),1) == ",")
- {
- tmp = substr($10, 1, length($10)-1);
- $10 = $9
- $9 = tmp
- }
-
- print $0
- }'
- }
-
- mccpiofs_copyout ()
- # $1 is the archive name
- # $2 is a name of a file within the archive
- # $3 is a name of a file within the system (to add from or extract to)
- {
- TMPDIR=/tmp/mctmpdir.$$
- mkdir $TMPDIR
- cd $TMPDIR
- uni_cat "$1" | cpio -icumd "$2" 2>/dev/null
- mv "$2" "$3"
- cd /
- rm -rf $TMPDIR
- }
-
- #
- # main
- #
-
- case "$1" in
- list) mccpiofs_list $2
- exit 0
- ;;
- copyout) mccpiofs_copyout $2 $3 $4
- exit 0
- ;;
- esac
-
- exit 1
-
-